﻿#define _CRT_SECURE_NO_WARNINGS 1
//#include <stdio.h>
//例如：
//struct S1
//{
//	char c1;
//	int i;
//	char c2;
//};
//struct S2
//{
//	char c1;
//	char c2;
//	int i;
//};
//
//int main()
//{
//	printf("%zd ", sizeof(struct S1));
//	printf("%zd ", sizeof(struct S2));
//	return 0;
//}


//#include <stdio.h>
//#pragma pack(1)//设置默认对⻬数为1
//struct S
//{
//	char c1;
//	int i;
//	char c2;
//};
//#pragma pack()//取消设置的对⻬数，还原为默认
//int main()
//{
//	//输出的结果是什么？
//	printf("%zd\n", sizeof(struct S));
//	return 0;
//}

//#include <stdio.h>
//struct S
//{
//	int data[1000];
//	int num;
//};
//struct S s = { {1,2,3,4}, 1000 };
////结构体传参
//void print1(struct S s)
//{
//	printf("%d\n", s.num);
//}
////结构体地址传参
//void print2(struct S* ps)
//{
//	printf("%d\n", ps->num);
//}
//int main()
//{
//	print1(s); //传结构体
//	print2(&s); //传地址
//	return 0;
//}

//#include <stdio.h>
//struct A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//int main()
//{
//	printf("%zd\n", sizeof(struct A));
//	return 0;
//}

//⼀个例⼦
//#include <stdio.h>
//struct S
//{
//	char a : 3;
//	char b : 4;
//	char c : 5;
//	char d : 4;
//};
//int main()
//{
//	int n = 10;
//	struct S s = { 0 };
//	printf("%zd\n", sizeof(struct S));
//	s.a = 10;
//	s.b = 12;
//	s.c = 3;
//	s.d = 4;
//	printf("%zd", sizeof(struct S));
//	return 0;
//}
//#include <stdio.h>
//
//int main() {
//    int n = 10;
//    // 获取变量n的地址
//    int* ptr = &n;
//    // 打印变量n的地址
//    printf("变量n的内存地址为：%p", ptr);
//    return 0;
//}


//struct A
//{
//	int _a : 2;
//	int _b : 5;
//	int _c : 10;
//	int _d : 30;
//};
//int main()
//{
//	struct A sa = { 0 };
//	scanf("%d", &sa._b);//这是错误的
//
//	//正确的⽰范
//	int b = 0;
//	scanf("%d", &b);
//	sa._b = b;
//	return 0;
//}



//#include <stdio.h>
////联合类型的声明
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	//计算连个变量的⼤⼩
//	printf("%zd\n", sizeof(un));
//	return 0;
//}


////代码1
//#include <stdio.h>
////联合类型的声明
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	// 下⾯输出的结果是⼀样的吗？
//	printf("%p\n", &(un.i));
//	printf("%p\n", &(un.c));
//	printf("%p\n", &un);
//	return 0;
//}

////代码2
//#include <stdio.h>
////联合类型的声明
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	//联合变量的定义
//	union Un un = { 0 };
//	un.i = 0x11223344;
//	un.c = 0x55;
//	printf("%#x\n", un.i);
//	return 0;
//}


//struct S
//{
//	char c;
//	int i;
//};
//union Un
//{
//	char c;
//	int i;
//};
//int main()
//{
//	union Un un = { 0 };
//	struct S s = { 0 };
//	return 0;
//}


//#include <stdio.h>
//union Un1
//{
//	char c[5];
//	int i;
//};
//union Un2
//{
//	short c[7];
//	int i;
//};
//int main()
//{
//	//下⾯输出的结果是什么？
//	printf("%zd\n", sizeof(union Un1));
//	printf("%zd\n", sizeof(union Un2));
//	return 0;
//}


//#include <stdio.h>
////首先我们会优先将所有的属性全部放到一个结构体中，但是这是否会浪费空间呢
////仔细想一想是否可以利用联合体的特性来解决这个问题
//struct gift_list
//{
//	//公共属性
//	int stock_number; //库存
//	double price; //定价
//	int item_type; //商品类型
//
//
//	//其他的特殊属性
//	char tital[20]; //书名
//	char author[20]; //作者
//	int num_page; //页数
//	char design[20]; //设计
//	int colors; //颜色
//	int sizes; //尺寸
//};
//
//
//struct Gift_List
//{
//	//公共属性
//	int stock_number; //库存
//	double price; //定价
//	int item_type; //商品类型
//
//	union MyUnion
//	{
//		struct Book
//		{
//			char tital[20]; //书名
//			char author[20]; //作者
//			int num_page; //页数
//		}book;
//		
//		struct Mug
//		{
//			char design[20]; //设计
//		}mug;
//
//		struct Shirt
//		{
//			char design[20]; //设计
//			int colors; //颜色
//			int sizes; //尺寸
//		}shirt;
//	};
//}gift_list;
//
//int main()
//{
//	struct Shirt s = { "dasd",3,20};
//	return 0;
//}
//#include <stdio.h>
//int check_sys()
//{
//	union
//	{
//		int i;
//		char c;
//	}un;
//	un.i = 1;
//	//printf("%d\n", un.i);
//	//un.c = 's';
//	//printf("%c\n", un.c);
//	return un.c;
//}
//int main()
//{
//	int ret = check_sys();
//	printf("%d", ret);
//	return 0;
//}

//enum Day //星期
//{
//	MON,
//	TUES,
//	WED,
//	THUR,
//	FRI,
//	SAT,
//	SUN
//};
//enum Sex //性别
//{
//	MALE,
//	FEMALE,
//	SECRET
//};
//enum Color //颜色
//{
//	RED,
//	GREEN,
//	BLUE
//};
//int main()
//{
//
//	return 0;
//}


//enum Color//颜⾊
//{
//	RED = 1,
//	GREEN = 2,
//	BLUE = 4
//};
//enum Color clr = GREEN;//使⽤枚举常量给枚举变量赋值

#include <stdio.h>
void Menu()
{
	printf("**************************\n");
	printf("*****1.add   2.sub********\n");
	printf("*****3.mul   4.div********\n");
	printf("*****0.exit       ********\n");
	printf("**************************\n");
}
enum Calculate
{
	exit,
	add,
	sub,
	mul,
	div
};
int main()
{
	int input = 0;
	do
	{
		Menu();
		printf("请输入你想要输入的数字>");
		scanf("%d", &input);
		switch (input)
		{
		case add:
			break;
		case sub:
			break;
		case mul:
			break;
		case div:
			break;
		case exit:
			printf("退出程序");
			break;
		default:
			printf("请重新输入！！！！");
		}
	} while(input);
}